/**
 * WeChat API 模块
 * @type {Object}
 * 用于将微信官方`API`封装为`Promise`方式
 * > 小程序支持以`CommonJS`规范组织代码结构
 */
const wechat = require('./utils/wechat.js')

/**
 * Douban API 模块
 * @type {Object}
 */
const yds = require('./utils/yds.js')

/**
 * Baidu API 模块
 * @type {Object}
 */
// const baidu = require('./utils/baidu.js')

/**
 * Qrcode API 模块
 */
const qrcode = require('./utils/qrcode.js')

/**
 * 工具函数
 */

const util = require('./utils/util.js')

/**
 * wetoast第三方插件. 
 */

const {WeToast} = require('./utils/wetoast.js')


App({
    /**
     * Global shared
     * 可以定义任何成员，用于在整个应用中共享
     */
    data: {
        // name: 'Douban Movie',
        // version: '0.1.0',
        // currentCity: '北京'
    },
    /**
     * 定义全局参数,判断有没有登录,有无sessionId
     */
    globalData: {
        hasLogin: false,
        sessionId: null,
    },

    /**
     * WeChat API
     */
    wechat: wechat,

    /**
     * yds API
     */
    yds: yds,

    /**
     * wetoast api
     */
    WeToast,

    /**
     * qr 二维码生成器
     */
    qrcode: qrcode,

    /**
     * 工具函数
     */
    util: util,

    /**
     * 生命周期函数--监听小程序初始化
     * 当小程序初始化完成时，会触发 onLaunch（全局只触发一次）
     */
    onLaunch() {
        wechat.login()
            .then(res => {
                if (res.code) {
                    console.log('登录成功！' + res.code)
                    yds.getSession(res.code)
                        .then(res => {
                            if (res.code && res.code == 0) {
                                this.globalData.sessionId = res.data
                                yds.getUserInfo(this.globalData.sessionId)
                                    .then(res => {
                                        wechat.setStorage('userInfo', res.data);
                                        if (!res.data) {
                                            yds.setUserInfo('', this.globalData.sessionId)
                                                .then(res => {});
                                        }
                                    });
                            }
                        });
                } else {
                    console.error('获取用户登录态失败！' + res.errMsg)
                }
            })
            // wechat
            //   .getLocation()
            //   .then(res => {
            //     const { latitude, longitude } = res
            //     return baidu.getCityName(latitude, longitude)
            //   })
            //   .then(name => {
            //     this.data.currentCity = name.replace('市', '')
            //     console.log(`currentCity : ${this.data.currentCity}`)
            //   })
            //   .catch(err => {
            //     this.data.currentCity = '北京'
            //     console.error(err)
            //   })
            // console.log(' ========== Application is launched ========== ')
    },
    /**
     * 生命周期函数--监听小程序显示
     * 当小程序启动，或从后台进入前台显示，会触发 onShow
     */
    onShow() {
        console.log(' ========== Application is showed ========== ')
    },
    /**
     * 生命周期函数--监听小程序隐藏
     * 当小程序从前台进入后台，会触发 onHide
     */
    onHide() {
        console.log(' ========== Application is hid ========== ')
    }
})
